// 1. 引入模块（http：创建服务；fs：读取文件；querystring：解析POST数据）
const http = require('http');
const fs = require('fs');
const path = require('path');

// 2. 读取data.json中的合法账号（同步读取，服务启动时加载一次）
function getValidUsers() {
  const jsonPath = path.join(__dirname, 'data.json'); // 获取data.json的绝对路径
  try {
    const jsonData = fs.readFileSync(jsonPath, 'utf8'); // 同步读取文件
    return JSON.parse(jsonData); // 解析JSON为数组
  } catch (error) {
    console.error('读取data.json失败：', error.message);
    return []; // 失败时返回空数组
  }
}

const validUsers = getValidUsers(); // 加载合法账号

// 3. 创建HTTP服务，监听8081端口
const server = http.createServer((req, res) => {
  // 仅处理根路径（http://localhost:8081/）的POST请求
  if (req.url === '/' && req.method === 'POST') {
    let postData = ''; // 存储POST请求的数据流

    // 4. 收集POST数据流（POST数据是分段传输的，需监听data事件）
    req.on('data', (chunk) => {
      postData += chunk; // 拼接每一段数据
    });

    // 5. 数据流收集完成（end事件触发后，解析数据并验证）
    req.on('end', () => {
      try {
        // 解析POST数据（客户端发送的是JSON格式，需用JSON.parse）
        const { username, password } = JSON.parse(postData);

        // 6. 验证账号：检查是否在合法用户数组中
        const isLoginSuccess = validUsers.some(
          user => user.username === username && user.password === password
        );

        // 7. 向客户端返回结果（设置JSON格式响应）
        res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
        res.end(JSON.stringify({
          message: isLoginSuccess ? '登录成功' : '用户名、密码不正确'
        }));
      } catch (error) {
        // 处理数据解析错误（如客户端发送的不是合法JSON）
        res.writeHead(400, { 'Content-Type': 'application/json; charset=utf-8' });
        res.end(JSON.stringify({ message: '请求数据格式错误' }));
      }
    });
  } else {
    // 处理非POST或非根路径请求（返回404）
    res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end('仅支持POST / 请求');
  }
});

// 8. 启动服务
server.listen(8081, () => {
  console.log('登录验证服务已启动：localhost:8081（等待POST请求）');
});